package cn.demo.um.service;

import cn.demo.common.core.page.PageQuery;
import java.util.List;
import java.util.Map;

import cn.demo.um.support.model.MatchScoreDto;
import com.mybatisflex.core.paginate.Page;
import cn.demo.um.domain.UmClientUser;
import com.mybatisflex.core.service.IService;

/**
 * 客户端用户Service接口
 *
 * @author xtjun
 * @date 2024-06-06
 */
public interface IUmClientUserService extends IService<UmClientUser>{
    /**
     * 查询客户端用户
     *
     * @param id 客户端用户主键
     * @return 客户端用户
     */
    public UmClientUser selectUmClientUserById(String id);

    UmClientUser selectUserVoById(String id);

    void buildDict(List<UmClientUser> user);

    /**
     * 查询客户端用户列表
     *
     * @param umClientUser 客户端用户
     * @return 客户端用户集合
     */
    public Page<UmClientUser> selectUmClientUserPage(UmClientUser umClientUser, PageQuery pageQuery);
    public List<UmClientUser> selectUmClientUserList(UmClientUser umClientUser);

    /**
     * 新增客户端用户
     *
     * @param umClientUser 客户端用户
     * @return 结果
     */
    public int insertUmClientUser(UmClientUser umClientUser);

    /**
     * 修改客户端用户
     *
     * @param umClientUser 客户端用户
     * @return 结果
     */
    public int updateUmClientUser(UmClientUser umClientUser);

    /**
     * 批量删除客户端用户
     *
     * @param ids 需要删除的客户端用户主键集合
     * @return 结果
     */
    public int deleteUmClientUserByIds(List<String> ids);

    /**
     * 删除客户端用户信息
     *
     * @param id 客户端用户主键
     * @return 结果
     */
    public int deleteUmClientUserById(String id);

    int focus(String id);

    int focusCancel(String id);

    Map<Object,Object> focusCount(String userId);

    Page<UmClientUser> focusList(String userId, String key, String type, PageQuery pageQuery);

    /**
     * 获取用户最终匹配分数
     * @return
     */
    List<UmClientUser> matchFullScoreDtoList(String userId, int start, int limit);

    /**
     * 获取用户原始的匹配分数
     * 不以百分比显示
     * @return
     */
    List<UmClientUser> matchSimpleScoreDtoList(String userId,int start,int limit);
}
